package org.product.websocket;

import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;

/**
 * WebSocket服务器端程序 - 类似于 Servlet 的一个特殊程序
 * @author zqx
 * @date 2021-01-04
 */
@ServerEndpoint("/hello")
public class HelloSocket {
    /**
     * 成功建立连接时，调用的方法
     * @param session 与某个客户端的连接会话，需要通过它来给客户端发送数据
     */
    @OnOpen
    public void open(Session session) {
        System.out.println("建立连接，您的会话ID为:" + session.getId());
    }

    /**
     * 连接关闭时，调用的方法
     * @param session 会话
     */
    @OnClose
    public void close(Session session) {
        System.out.println("会话结束，当前结束的会话ID为:"+session.getId()+" is closed ...");
    }

    /**
     * 收到客户端消息后，调用的方法
     * @param session  可选参数，根据需要选择使用
     * @param msg   客户端发送的消息
     */
    @OnMessage
    public void echoMessage(Session session, String msg) {
        // 服务器获取客户端的数据：msg
        System.out.println("client:"+msg);
        try {
            // 服务器向客户端发送数据
            session.getBasicRemote().sendText(msg + ",你好！");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
